Jackson এর JsonNode ক্লাস একটি ট্রি-বেসড মডেল সরবরাহ করে, যা JSON ডেটাকে ObjectNode এবং ArrayNode আকারে প্রতিনিধিত্ব করে। এটি মূলত JSON ডেটার ডাইনামিক বা অজানা স্ট্রাকচারের সাথে কাজ করতে সাহায্য করে।
JsonNode এর প্রধান সুবিধাসমূহ
- ডাইনামিক JSON পার্সিং: JSON স্ট্রাকচার না জেনেও ডেটা অ্যাক্সেস ও মডিফাই করা।
- ডেটার নির্দিষ্ট অংশ অ্যাক্সেস করা: JSON ডেটা থেকে নির্দিষ্ট প্রোপার্টি বা ভ্যালু পড়া।
- নেস্টেড ডেটা নিয়ে কাজ: JSON এর নেস্টেড অবজেক্ট বা অ্যারে সহজে ম্যানেজ করা।
- Serialization এবং Deserialization সহজ করা।
JsonNode তৈরি করা
ObjectMapper এর মাধ্যমে JSON ডেটাকে JsonNode তে রূপান্তর করা যায়।
উদাহরণ ১: JSON থেকে JsonNode তৈরি
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonNodeExample {
public static void main(String[] args) throws Exception {
String jsonString = "{ \"name\": \"Alice\", \"age\": 25, \"skills\": [\"Java\", \"Python\"] }";
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(jsonString);
// JSON নোড প্রিন্ট করা
System.out.println(rootNode);
}
}
Output:
{"name":"Alice","age":25,"skills":["Java","Python"]}
ডেটা অ্যাক্সেস এবং ম্যানিপুলেশন
১. নির্দিষ্ট প্রোপার্টি অ্যাক্সেস করা
String name = rootNode.get("name").asText();
int age = rootNode.get("age").asInt();
System.out.println("Name: " + name); // Output: Alice
System.out.println("Age: " + age); // Output: 25
২. অ্যারের ডেটা অ্যাক্সেস করা
JsonNode skillsNode = rootNode.get("skills");
for (JsonNode skill : skillsNode) {
System.out.println("Skill: " + skill.asText());
}
// Output:
// Skill: Java
// Skill: Python
৩. নেস্টেড প্রোপার্টি অ্যাক্সেস করা
String nestedJson = "{ \"user\": { \"name\": \"Bob\", \"address\": { \"city\": \"Dhaka\" } } }";
JsonNode nestedRoot = mapper.readTree(nestedJson);
String city = nestedRoot.get("user").get("address").get("city").asText();
System.out.println("City: " + city); // Output: Dhaka
JSON মডিফিকেশন
১. নতুন প্রোপার্টি যোগ করা
import com.fasterxml.jackson.databind.node.ObjectNode;
ObjectNode objectNode = (ObjectNode) rootNode;
objectNode.put("country", "Bangladesh");
System.out.println(objectNode.toString());
// Output: {"name":"Alice","age":25,"skills":["Java","Python"],"country":"Bangladesh"}
২. প্রোপার্টি মুছে ফেলা
objectNode.remove("age");
System.out.println(objectNode.toString());
// Output: {"name":"Alice","skills":["Java","Python"],"country":"Bangladesh"}
Serialization (Object থেকে JSON)
JsonNode কে JSON স্ট্রিং এ রূপান্তর করা:
String jsonString = mapper.writeValueAsString(rootNode);
System.out.println(jsonString);
JSON Validation
JsonNode ব্যবহার করে ডেটা যাচাই করা:
if (rootNode.has("name")) {
System.out.println("Name exists.");
}
if (!rootNode.has("address")) {
System.out.println("Address does not exist.");
}
// Output:
// Name exists.
// Address does not exist.
JsonNodeডাইনামিক JSON ডেটার সাথে কাজ করার জন্য উপযোগী।- সহজে JSON ডেটা অ্যাক্সেস, আপডেট, এবং যাচাই করা যায়।
ObjectNodeএবংArrayNodeক্লাস ব্যবহার করে JSON এর অবজেক্ট এবং অ্যারে ম্যানিপুলেট করা যায়।- এটি API ডেভেলপমেন্ট, কনফিগারেশন ফাইল হ্যান্ডলিং এবং JSON ডেটার গভীর স্ট্রাকচারের সাথে কাজ করার ক্ষেত্রে অনেক কার্যকর।
Content added By
Read more